#include <iostream>

int *func()
{
    int *arr = new int[10]; // 分配一个包含10个整数的数组
    arr[0] = 1;
    arr[1] = 12321;
    return arr; // 返回指向该数组的指针
}

int main(int argc, char const *argv[])
{
    int *arr = func(); // 调用函数来获得分配的数组的指针

    for (int i = 0; i < 10; i++)
    {
        std::cout << arr[i] << std::endl; // 输出数组中的元素值（1-9将是随机值）
    }

    std::cout << arr << std::endl; // 输出数组的首地址
    std::cout << &arr << std::endl; // 输出指向指针的地址
    std::cout << arr[0] << std::endl; // 输出数组的第一个元素值（1）
    std::cout << arr[1] << std::endl;

    delete[] arr; // 释放数组的内存
    // delete arr;

    std::cout << arr << std::endl; // 输出数组的首地址（此时是悬空指针，不再有效）
    std::cout << &arr << std::endl; // 输出指向指针的地址
    std::cout << arr[0] << std::endl; // 输出数组的第一个元素值（不再有效，可能是垃圾值）
    std::cout << arr[1] << std::endl;

    std::cout << "Hello World!" << std::endl;

    return 0;
}
